package com.kehongborui.reflecttion;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;

/**
 * 通过反射获取构造方法
 */
public class RefConstructorTest {
    public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
        Class clazz = Class.forName("com.kehongborui.reflecttion.Student");
        Constructor[] constructorArr =  clazz.getConstructors();  // 获取所有的 public 构造

        for (Constructor constructor : constructorArr) {  // 遍历所有的构造方法
            System.out.println(constructor);
        }

        System.out.println("----------------->");
        Constructor[] constructorArr02 = clazz.getDeclaredConstructors();   // 有 Declared 标记的方法，就是获取全部的构造方法
        for (Constructor constructor : constructorArr02) {  // 遍历所有的构造方法
            System.out.println(constructor);
        }

        System.out.println("----------------->");
        Constructor constructor = clazz.getConstructor(null);
        // 1>、因为是无参的构造方法所以类型是一个null,不写也可以：这里需要的是一个参数的类型，切记是类型
        System.out.println(constructor);
    }
}
